home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Arsenal Files 4
/
The Arsenal Files 4 (Arsenal Computer).ISO
/
clarion
/
disabl.exe
/
CONTA009.CLW
< prev
next >
Wrap
Text File
|
1995-01-05
|
10KB
|
302 lines
MEMBER('CONTACTS.clw') ! This is a MEMBER module
ReadMe PROCEDURE
LocalRequest LONG,AUTO
OriginalRequest LONG,AUTO
LocalResponse LONG,AUTO
WindowOpened LONG
WindowInitialized LONG
ForceRefresh LONG,AUTO
ASCIIFileSize LONG
ASCIIBytesThisRead LONG
ASCIIBytesRead LONG
ASCIIBytesThisCycle LONG
ASCIIPercentProgress BYTE
Queue:ASCII QUEUE
STRING(255)
END
ASC1:FileName STRING(80)
ASC1:CurrentFileName STRING(80)
ASC1:ASCIIFile FILE,PRE(ASC1),DRIVER('ASCII'),NAME(ASCIIFileName)
RECORD
STRING STRING(255)
END
END
ASC1:ReportCounter LONG
ASC1:Report REPORT,AT(1000,2500,6000,6000),FONT('Fixedsys',9,,FONT:regular),THOUS
Detail DETAIL,AT(,,,167)
STRING(@s255),AT(104,0,,),USE(Queue:ASCII)
END
END
ASC1:WholeWord BYTE
ASC1:Matchcase BYTE
ASC1:Direction CSTRING('Down')
ASC1:SearchString CSTRING(80)
ASC1:CurrentPointer LONG
ASC1:TextLocation LONG
ASC1:SearchWindow WINDOW('Searching Text...'),AT(43,25,267,60),FONT('MS Sans Serif',8,,),GRAY
PROMPT('Find What:'),AT(11,5,,),USE(?ASC1:TextPrompt)
ENTRY(@s20),AT(53,5,149,15),USE(ASC1:SearchString)
CHECK('Match &Whole Word Only'),AT(11,30,,),USE(ASC1:WholeWord)
CHECK('Match &Case'),AT(11,44,,),USE(ASC1:MatchCase)
OPTION('Direction'),AT(111,28,81,26),USE(ASC1:Direction),BOXED
RADIO('Up'),AT(117,39,,)
RADIO('Down'),AT(149,39,,)
END
BUTTON('Find'),AT(208,5,53,15),USE(?ASC1:Search),DEFAULT
BUTTON('Cancel'),AT(208,25,53,15),USE(?ASC1:CancelSearch)
END
ViewWindow WINDOW('Read Me'),AT(33,31,296,136),FONT('Arial',9,,),HVSCROLL,SYSTEM,GRAY,MAX
LIST,AT(5,5,285,110),FONT('FixedSys',9,,FONT:regular),USE(?AsciiBox),HVSCROLL,FROM(Queue:ASCII)
BUTTON('&Print'),AT(135,120,35,10),USE(?ASCIIPrint)
BUTTON('&Find...'),AT(174,120,35,10),USE(?ASCIISearch)
BUTTON('Find Next'),AT(213,120,39,10),USE(?ASCIIRepeat)
BUTTON('&Close'),AT(255,120,35,10),USE(?Close)
END
ProgressWindow WINDOW('Progress...'),AT(,,142,59),CENTER,TIMER(1),GRAY,DOUBLE
STRING(''),AT(0,3,141,10),USE(?Progress:UserString),CENTER
BOX,AT(15,15,111,12),COLOR(00H),FILL(0FFFFFFH)
BOX,AT(21,18,100,6),COLOR(00H),FILL(0C0C0C0H)
BOX,AT(21,18,100,6),USE(?Progress:Thermometer),FILL(0FFH)
STRING(''),AT(0,30,141,10),USE(?Progress:PctText),CENTER
BUTTON('Cancel'),AT(45,42,50,15),USE(?Progress:Cancel)
END
CODE
LocalRequest = GlobalRequest
OriginalRequest = GlobalRequest
LocalResponse = RequestCancelled
CLEAR(GlobalRequest)
CLEAR(GlobalResponse)
OPEN(ViewWindow)
WindowOpened=True
?ASCIIRepeat{Prop:Disable}=True
ACCEPT
CASE EVENT()
OF EVENT:OpenWindow
IF NOT WindowInitialized
DO InitializeWindow
END
SELECT(?AsciiBox)
OF EVENT:GainFocus
WindowInitialized = True
DO InitializeWindow
END
CASE FIELD()
OF ?ASCIIPrint
CASE EVENT()
OF EVENT:Accepted
DO SyncWindow
SETCURSOR(CURSOR:Wait)
ASC1:ReportCounter = 0
OPEN(ASC1:Report)
LOOP
ASC1:ReportCounter += 1
IF ASC1:ReportCounter > RECORDS(Queue:ASCII)
BREAK
END
GET(Queue:ASCII,ASC1:ReportCounter)
PRINT(DETAIL)
END
CLOSE(ASC1:Report)
SETCURSOR
DO RefreshWindow
END
OF ?ASCIISearch
CASE EVENT()
OF EVENT:Accepted
DO SyncWindow
OPEN(ASC1:SearchWindow)
ACCEPT
CASE EVENT()
OF Event:OpenWindow
SELECT(?ASC1:SearchString)
OF Event:CloseWindow
CLOSE(ASC1:SearchWindow)
OF Event:Accepted
CASE FIELD()
OF ?ASC1:Search
LocalResponse = RequestCompleted
POST(Event:CloseWindow)
OF ?ASC1:CancelSearch
LocalResponse = RequestCancelled
POST(Event:CloseWindow)
END
END
END
IF LocalResponse = RequestCompleted
DO ASC1:FindText
?ASCIIRepeat{Prop:Disable}=False
ELSE
?ASCIIRepeat{Prop:Disable}=True
END
DO RefreshWindow
END
OF ?ASCIIRepeat
CASE EVENT()
OF EVENT:Accepted
DO SyncWindow
DO ASC1:FindText
DO RefreshWindow
END
OF ?Close
CASE EVENT()
OF EVENT:Accepted
DO SyncWindow
LocalResponse = RequestCancelled
POST(Event:CloseWindow)
DO RefreshWindow
END
END
END
IF WindowOpened
CLOSE(ViewWindow)
END
IF LocalResponse
GlobalResponse = LocalResponse
ELSE
GlobalResponse = RequestCancelled
END
RETURN
!---------------------------------------------------------------------------
InitializeWindow ROUTINE
ForceRefresh = True
DO RefreshWindow
!---------------------------------------------------------------------------
RefreshWindow ROUTINE
ASC1:FileName = 'readme.txt'
IF ASC1:FileName <> ASC1:CurrentFileName
ASCIIFileName = ASC1:FileName
DO ASC1:FillQueue
ASC1:CurrentFileName = ASC1:Filename
END
DISPLAY()
ForceRefresh = False
!---------------------------------------------------------------------------
SyncWindow ROUTINE
!---------------------------------------------------------------------------
ASC1:FillQueue ROUTINE
FREE(Queue:ASCII)
IF NOT ASCIIFileName
?AsciiBox{Prop:Disable} = True
EXIT
ELSE
?AsciiBox{Prop:Disable} = False
END
OPEN(ASC1:ASCIIFile,10h)
IF ERRORCODE()
DISABLE(?AsciiBox)
IF StandardWarning(Warn:FileLoadError,ASC1:FileName)
EXIT
END
END
ASCIIFileSize = BYTES(ASC1:ASCIIFile)
IF ASCIIFileSize = 0
CLOSE(ASC1:ASCIIFile)
DISABLE(?AsciiBox)
IF StandardWarning(Warn:FileZeroLength,ASC1:FileName)
EXIT
END
EXIT
END
OPEN(ProgressWindow)
ASCIIPercentProgress = 0
ASCIIBytesRead = 0
ProgressWindow{Prop:Text} = 'Reading File'
?Progress:Thermometer{Prop:Width} = 0
?Progress:PctText{Prop:Text} = '0% Completed'
?Progress:UserString{Prop:Text} = ''
ACCEPT
CASE EVENT()
OF Event:OpenWindow
SET(ASC1:ASCIIFile)
OF Event:Timer
ASCIIBytesThisCycle = 0
LOOP WHILE ASCIIBytesThisCycle < 20000
NEXT(ASC1:ASCIIFile)
IF ERRORCODE()
LocalResponse = RequestCompleted
BREAK
END
ASCIIBytesThisRead = BYTES(ASC1:ASCIIFile)
ASCIIBytesThisCycle += ASCIIBytesThisRead
ASCIIBytesRead += ASCIIBytesThisRead
Queue:ASCII = ASC1:String
ADD(Queue:ASCII)
END
IF ASCIIPercentProgress < 100
ASCIIPercentProgress = (ASCIIBytesRead/ASCIIFileSize)*100
IF ASCIIPercentProgress > 100
ASCIIPercentProgress = 100
END
?Progress:Thermometer{Prop:Width} = ROUND(ASCIIPercentProgress,0)
?Progress:PctText{Prop:Text} = FORMAT(ASCIIPercentProgress,@N3) & '% Completed'
DISPLAY(?Progress:Thermometer)
DISPLAY(?Progress:PctText)
END
IF LocalResponse = RequestCompleted
LocalResponse = RequestCancelled
POST(Event:CloseWindow)
END
END
CASE FIELD()
OF ?Progress:Cancel
CASE EVENT()
OF Event:Accepted
IF StandardWarning(Warn:ConfirmCancelLoad,ASC1:FileName)=Button:OK
POST(Event:CloseWindow)
END
END
END
END
CLOSE(ProgressWindow)
CLOSE(ASC1:ASCIIFile)
!----------------------------------------------------------------
ASC1:FindText ROUTINE
ASC1:CurrentPointer = CHOICE(?AsciiBox)
SETCURSOR(CURSOR:Wait)
LOOP
IF ASC1:Direction = 'Down'
ASC1:CurrentPointer += 1
IF ASC1:CurrentPointer = RECORDS(Queue:ASCII)
IF StandardWarning(Warn:EndOfASCIIQueue,'Down') = Button:Yes
ASC1:CurrentPointer = 1
ELSE
BREAK
END
END
ELSE
ASC1:CurrentPointer -= 1
IF ASC1:CurrentPointer = 0
IF StandardWarning(Warn:EndOfASCIIQueue,'Up') = Button:Yes
ASC1:CurrentPointer = RECORDS(Queue:ASCII)
ELSE
BREAK
END
END
END
GET(Queue:ASCII,ASC1:CurrentPointer)
IF ASC1:MatchCase
ASC1:TextLocation = INSTRING(ASC1:SearchString,Queue:ASCII,1,1)
ELSE
ASC1:TextLocation = INSTRING(UPPER(ASC1:SearchString),UPPER(Queue:ASCII),1,1)
END
IF NOT ASC1:TextLocation
CYCLE
END
IF ASC1:WholeWord
IF ASC1:TextLocation > 1
IF SUB(Queue:ASCII,ASC1:TextLocation-1,1)
CYCLE
END
END
IF ASC1:TextLocation+LEN(CLIP(ASC1:SearchString))<LEN(CLIP(Queue:ASCII))
IF SUB(Queue:ASCII,ASC1:TextLocation+LEN(CLIP(ASC1:SearchString)),1)
CYCLE
END
END
END
SELECT(?AsciiBox,ASC1:CurrentPointer)
BREAK
END
SETCURSOR